package jgl.vajra.management.part.vehicle.contract;

import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.management.bean.OrderDetailsBean;
import jgl.vajra.management.bean.OrderPaymentDetailsBean;
import jgl.vajra.management.databinding.ActivityOrderDetailsBinding;
import jgl.vajra.management.widget.mvvm.model.BaseModel;
import jgl.vajra.management.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.management.widget.mvvm.viewmodel.BaseViewModel;

public class OrderDetailsContract {
    public abstract static class Model extends BaseModel {
        public abstract Observable<OrderPaymentDetailsBean> getOrderPaymentDetailsData(Map<String, Object> map);

        public abstract Observable<String> cancelOrder(Map<String, Object> map);

        public abstract Observable<OrderDetailsBean> getOrderDetailsData(Map<String, Object> map);

        public abstract Observable<Object> determineOrderCompleteData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {

        void onConfirm();

        void onSendMessage(OrderPaymentDetailsBean data);

        void onPhone(OrderPaymentDetailsBean data);

        void onWaitingFee();

        void onPolice(String contactPhone);

        void onCustomerService(OrderPaymentDetailsBean data);

        void onShareOrder();

        void onCancelOrder();

        void onContactNo();

        void onChangeDriver();

        void onCopyOrder(String orderId);

        void onDetermine();

        void onVideoSurveillance();

        void returnOrderPaymentDetailsData(OrderPaymentDetailsBean data);

        void returnCancelOrder();

        void returnOrderDetailsData(OrderDetailsBean data);

        void returnDetermineOrderCompleteData();

    }

    public abstract static class ViewModel extends BaseViewModel<View, ActivityOrderDetailsBinding, Model> {
        public abstract void getOrderPaymentDetailsData(Map<String, Object> map);

        public abstract void cancelOrder(Map<String, Object> map);

        public abstract void getOrderDetailsData(Map<String, Object> map);

        public abstract void determineOrderCompleteData(Map<String, Object> map);
    }
}
